// once 不管用户点多少次按钮 只执行一次
function once(fn) {
  let done = false
  return function () {
    if (!done) {
      done = true
      // return 可以知道返回的是成功还是失败
      return fn.apply(this, arguments)
    }
  }
}

// 和节流防抖的思路一致，ES6写法
const once = () => {
  // 初始条件
  let done = false
  return (...args) => {
    if (!done) {
      // 反转初始条件
      done = true
      return fn.apply(this, args)
    }
  }
}
